package pers.dawnyang.modular.system.service;


import java.io.IOException;
import java.util.List;
import org.springframework.web.multipart.MultipartFile;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import pers.dawnyang.common.domain.entity.SysUser;
import pers.dawnyang.common.domain.entity.SysUserDept;
import pers.dawnyang.modular.system.domain.request.user.UserDeptReqU;
import pers.dawnyang.modular.system.domain.request.user.UserReqR;
import pers.dawnyang.modular.system.domain.request.user.UserRoleReqU;
import pers.dawnyang.modular.system.domain.response.user.UserDeptRes;
import pers.dawnyang.modular.system.domain.response.user.UserExcelRes;
import pers.dawnyang.modular.system.domain.response.user.UserRes;
import pers.dawnyang.modular.system.domain.response.user.UserRoleRes;

public interface UserService extends IService<SysUser> {

  Page<UserRes> getPage(Page<UserRes> page, UserReqR req);

  List<SysUserDept> getUserDeptList(Long userId);

  void saveUserRole(UserRoleReqU req);

  List<UserDeptRes> getUserDept(Long id);

  void saveUserDept(UserDeptReqU req);

  List<UserRoleRes> getUserRole(Long userId);

  UserRes getUserDetail(Long userId);

  void resetPwd(Long userId);

  List<UserExcelRes> export(UserReqR req);

  String uploadExcel(MultipartFile file) throws IOException;

  Long getUserMinRoleLevel(Long userId);

  /**
   * 检查用户，角色权限越级操作
   * 
   * @param userId
   * @return
   */
  boolean checkRoleLevel(Long userId);

  Long getMinRoleLevelByRoleIds(String roleIds);


}
